package day23;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

/**
 * 需求：
 * 建立一个文本转换服务器。
 * 客户端给服务端发送文本，服务端会讲文本转成大写再返回给客户端
 * 而且客户端可以不断的进行文本转换，当客户端输入over时，转换结束
 * 
 * 分析：
 * 客户端：
 * 既然是操作设备上的数据，那么就可以使用IO技术，并按照IO的操作规律来思考
 * 源：键盘录入。目的：网络设备，网络输出流
 * 而且操作的是文本数据，可以选择字符流
 * 
 * 步骤：
 * 1.建立服务；
 * 2.获取键盘录入；
 * 3.将数据发给服务端
 * 4.获取服务端返回的大写数据
 * 5.结束，关闭资源
 */

/**
 *
 * TransClient.java
 * @author wangbiao<br/>
 *         email:785497344@qq.com
 * @description 文本转换服务客户端
 * @since 1.0.0
 * @date 2013-7-11下午10:50:39
 *
 */
public class TransClient {
	
	public static void main(String[] args) {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter out = null;
		BufferedReader in = null;
		Socket s = null;
		try {
			s = new Socket("127.0.0.1", 10000);
			
			out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
			//==上面一句的简写
			//PrintWriter writer = new PrintWriter(s.getOutputStream(), true);
			//获取服务端返回的数据
			in = new BufferedReader(new InputStreamReader(s.getInputStream()));
			String line = null;
			while ((line=br.readLine()) != null) {
				if ("over".equals(line)) {
					break;
				}
				out.write(line);
				//加入结束标记，以便服务端readline()方法结束
				out.newLine();
				//把读取来的数据中缓冲区刷新到服务端去
				out.flush();
				
				//==以上三句话
				//writer.println(line);
				
				//循环读取服务端返回的大写数据并打印到控制台
				String data = in.readLine();
				System.out.println("服务端返回数据"+data);
			}
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (null != br) {
				try {
					br.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (null != s) {
				try {
					s.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
	}
}
